Introducción

En esta página se podrá visualizar un mapa con la cantidad de especies de orquídeas de acuerdo a las Areas Silvestres Protegidas de Costa Rica.

Preparación de datos y librerias

library(raster)
library(sf)
library(spData)
library(leaflet)
library(dplyr)
library(RColorBrewer)

# Datos de orquideas

orquideas <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/orchidaceae-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ), 
    quiet = TRUE
  )

# Carga Datos de Areas Protegidas Silvestres

asp <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/sinac/asp/asp-wgs84.geojson",
    quiet = TRUE
  )

# Carga de la capa de cantones
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )

# Carga de la capa de provincias
provincias <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
    quiet = TRUE
  )

# Asignación del sistema de coordenadas
st_crs(orquideas) = 4326
st_crs(asp) = 4326

Limpieza de datos

# Eliminación de los registros con un valor mayor a 1000

orquideas <-
  orquideas %>%
  mutate(coordinateUncertaintyInMeters = as.numeric(coordinateUncertaintyInMeters)) %>%
  mutate(eventDate = as.Date(eventDate, "%Y-%m-%d"))

orquideas <-
  orquideas %>%
  dplyr::filter(!is.na(coordinateUncertaintyInMeters) & coordinateUncertaintyInMeters <= 1000)

# Descartar registros con especie = NA

orquideas <-
  orquideas %>%
  dplyr::filter(!is.na(species) & 
                  species != "")

# Eliminación de los registros de Areas Marinas

asp <-
  asp %>%
  dplyr::filter(!is.na(descripcio) & 
                  descripcio != "Area Marina de Manejo")
asp <-
  asp %>%
  dplyr::filter(!is.na(descripcio) & 
                  descripcio != "Area marina protegida")


# Recolección de los datos de orquideas en asp


asp_registros <-
  asp %>%
  st_make_valid() %>%
  st_join(orquideas) %>%
  group_by(nombre_asp) %>%
  summarize(species = n())

Creación del mapa

# Paleta de colores

registros_colores <-
  colorNumeric(palette = "YlOrBr",
               domain = asp_registros$species,
               na.color = "transparent")

# Obtencion de capa de altitud
 
alt <- getData(
  "worldclim",
  var = "alt",
  res = .5,
  lon = -84,
  lat = 10
)

altitud <- crop(alt, extent(-86, -82.3, 8, 11.3))
altitud <-
  alt %>%
  crop(provincias) %>%
  mask(provincias)

# popups


pas <- paste0("<b>", "Area protegia: ","</b>",
               (asp_registros$nombre_asp),"<br>",
               "<b>", "Numero de especies: ","</b>",
               (asp_registros$species),"<br>",
               "<b>", "Descripcion del Area Silvestre Protegida: ","</b>",
               (asp$descripcio))

# Mapa

leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addRasterImage(
    altitud,
    opacity = 0.8,
    col = brewer.pal(5, "YlGn"),
    group = "Altitud"
  ) %>%
  addPolygons(
    data = asp_registros,
    fillColor = ~ registros_colores(asp_registros$species),
    fillOpacity = 0.7,
    stroke = TRUE,
    color = "black",
    weight = 1,
    popup = pas,
    group = "ASP - especies de orquideas"
  ) %>%
  addLayersControl(baseGroups = c("OpenStreetMap","Stamen Toner Lite", "Imágenes de ESRI"),
                   overlayGroups = c("ASP - especies de orquideas", "Altitud")) %>%
  addLegend(
    position = "bottomleft",
    pal = registros_colores,
    values = asp_registros$species,
    group = "ASP - especies de orquideas",
    title = "Cantidad de especies") %>%
addMiniMap(
  tiles = providers$Stamen.OpenStreetMap.Mapnik,
  position = "bottomleft",
  toggleDisplay = TRUE
)